(posn-col-row): Do something useful for scroll bar event.
authorRichard M. Stallman <rms@gnu.org>
Sun, 22 May 1994 20:55:15 +0000 (20:55 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sun, 22 May 1994 20:55:15 +0000 (20:55 +0000)
lisp/subr.el

index b5b7a8d620d86db8db18dfbaaae322881ffa52c8..c281a64843de3125bc9c460bfec5791255426571 100644 (file)
@@ -420,17 +420,27 @@ POSITION should be a list of the form
 as returned by the `event-start' and `event-end' functions."
   (nth 2 position))
 
-(defsubst posn-col-row (position)
-  "Return the column and row in POSITION, measured in characters.
+(defun posn-col-row (position)
+  "Return the row and column in POSITION, measured in characters.
 POSITION should be a list of the form
    (WINDOW BUFFER-POSITION (X . Y) TIMESTAMP)
-as returned by the `event-start' and `event-end' functions."
-  (let* ((pair (nth 2 position))
-        (window (posn-window position))
-        (frame (if (framep window) window (window-frame window)))
-        (x (/ (car pair) (frame-char-width frame)))
-        (y (/ (cdr pair) (frame-char-height frame))))
-    (cons x y)))
+as returned by the `event-start' and `event-end' functions.
+For a scroll-bar event, the result column is 0, and the row
+corresponds to the vertical position of the click in the scroll bar."
+  (let ((pair   (nth 2 position))
+       (window (posn-window position)))
+    (if (eq (if (symbolp (nth 1 position)) (nth 1 position)
+             (car (nth 1 position)))
+           'vertical-scroll-bar)
+       (cons 0 (scroll-bar-scale pair (1- (window-height window))))
+      (if (eq (if (symbolp (nth 1 position)) (nth 1 position)
+               (car (nth 1 position)))
+             'horizontal-scroll-bar)
+         (cons (scroll-bar-scale pair (window-width window)) 0)
+       (let ((frame (if (framep window) window (window-frame window)))
+             (x (/ (car pair) (frame-char-width frame)))
+             (y (/ (cdr pair) (frame-char-height frame))))
+         (cons x y))))))
 
 (defsubst posn-timestamp (position)
   "Return the timestamp of POSITION.